Development of software can be a tedious and time-consuming business. Software applications typically all do the same basic manipulations of data. The variation in how those manipulations occur and what the data represents leads to diversity in software. Thus, it is not unusual to use the same software routines or components in a variety of different applications.
While the same routines may be used, they may have variations which make individual instances of a routine differ slightly. Alternatively, the same routine may be plugged in, as-is, to a different (or related) application when the same type of data is processed. Thus, during software development, it may be advantageous to locate, manually or automatically, existing software which can be reused in whole or in-part.
Finding reusable software code is potentially simple, given an organized list of software components already in existence and a knowledge of what these components are. However, no typical software engineer has such information for all software the engineer has developed individually. Moreover, groups of software developers generally have only vague knowledge of what members of the group have developed, and little knowledge of what has been developed outside the group. Thus, it may be useful to develop a system which will allow organized access to software source code from various software applications or source code repositories. Moreover, it may be useful to categorize or otherwise organize such information, thus enabling access to the source code in an efficient manner.